import axios from 'axios';
import NProgress from 'nprogress'; // 进度条
import 'nprogress/nprogress.css'; // 进度条样式

// 创建axios实例
const request = axios.create({ timeout: '4000' });

// 请求拦截器
request.interceptors.request.use(
    (config) => {
      // 开启进度条
      NProgress.start();
      return config;
    },
    (error) => {
      return Promise.reject(error);
    },
);

// 响应拦截器
request.interceptors.response.use(
    (response) => {
      //关闭进度条
      NProgress.done();
      //对于我们的成功来说,不但响应状态码是200,并且请求回来的数据中的后端给的code码也是200才可以
      //举个例子:登录的时候返回密码错误,但是响应状态码是200,但是数据中code是207,这就不是我们想要的
      if (response.data.code === 200) {
        //当拿到我们想要的数据后,直接返回想要的数据(response.data只是后台返回的整体数据,我们想要的数据在response.data.data)
        return response.data.data;
      }
      return Promise.reject({ message: response.data.message });
    },
    (error) => {
      //关闭进度条
      NProgress.done();
      return Promise.reject(error);
    },
);

export default request;